[小站博客均为原创, 转载请保留以下信息:
作者:http://liguoliang.com 欢迎访问:Adobe上海用户组: http://riashanghai.com ]
设计NoteManagement 的Air 版,使用SQLite数据,实现之前所有的功能,如:用户注册登录,目录及便条的增加删除修改等.[点此查看NoteManagement的WEB版].
相对于前述WEB 版,Air 版的数据源已不再是ShareObject或XML,所以需要通过对数据库的存取进行操作.
另外,考虑到性能,对于Tree 进行Dynamic Loading, 以优化性能.
3.1 程序与数据库之间的操作:
3.1.1 与据库建立连接:
/**
* 建立一个只读连接.以检测数据库连接是否正常.
* openAsync的openmodel参数默认为creat,即:如果不指定具体openmodel的话,即使没有数据库,也会建立.
*/
private function init():void {
connReadOnly.addEventListener(SQLEvent.OPEN,connToDBSuccess);
connReadOnly.addEventListener(SQLErrorEvent.ERROR,connToDBFail);
connReadOnly.openAsync(Connection.dbFile,SQLMode.READ);
}
/**
* 数据库存在并连接成功的响应函数
*/
private function connToDBSuccess(event:SQLEvent):void {
LogUtils.defaultLog.info("DataBase Connected");
}
/**
* 在数据库连接出错时运行
*/
private function connToDBFail(event:SQLErrorEvent):void {
LogUtils.defaultLog.fatal(event.error.message);
}
以目录删除举例:
/**
* 删除Cat
/**
* 删除Cat
*/
private function delCat():void {
var sql:String =
"DELETE FROM Cat WHERE cat_ID = " + selectedCat.id;
SQLUtils.createAndExecuteStatement(conn, sql, null, delCatInDBSuccess);
}
private function delCatInDBSuccess(e:SQLEvent):void {
LogUtils.defaultLog.info("目录: " + selectedCat.label + " 已从数据库删除");
var i:int = selectedCat.parent.subCats.getItemIndex(selectedCat);
selectedCat.parent.subCats.removeItemAt(i);
TipsUtils.tipsPrint(tipsLabel,"Cat: " + selectedCat.label + " has been Deleted Success");
}
其中的SQLUtils.createAndExecuteStatement是一个Static的函数,具体代码如下:
/**
* 该函数可执行指定的sql语句,并添加事件监听
* 参数说明:
* conn: 与数据库的连接, sql: 需要执行的SQL语句,
* Parameters: sql语句如果需要参数,则由其提供,如insert 语句.默认为空
* onSuccess: sql语句执行成功的响应函数.
* onFail: sql语句执行失败的响应函数,如果不指定则会自动增加一个通用的ErrorHandler;
*/
public static function createAndExecuteStatement(conn:SQLConnection, sql:String, parameters:Array=null, onSuccess:Function=null, onFail:Function=null):SQLStatement {
var executeStatement:SQLStatement = new SQLStatement();
executeStatement.sqlConnection = conn;
executeStatement.text = sql;
if(parameters!=null) {
for(var i:int=0; i
executeStatement.parameters[i] = parameters[i];
}
}
if(onSuccess != null) {
executeStatement.addEventListener(SQLEvent.RESULT,onSuccess);
}
if(onFail != null) {
executeStatement.addEventListener(SQLErrorEvent.ERROR, onFail);
} else {
executeStatement.addEventListener(SQLErrorEvent.ERROR, commonErrorHandler)
}
executeStatement.execute();
LogUtils.defaultLog.info(“SQL: ” + sql);
return executeStatement;
}
public static function commonErrorHandler(e:SQLErrorEvent):void {
LogUtils.defaultLog.warn(“Common Error: ” + e.toString());
}
4.1 SQLite简介:http://www.ibm.com/developerworks/cn/opensource/os-sqlite/
4.2 SQLite管理工具:https://addons.mozilla.org/en-US/firefox/addon/5817
4.3 基本SQL语法:http://w3school.com.cn/sql/index.asp
电子线路,田字格,四个笨鸟 <->
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.